/*!
 * \file rsgiswindow.h
 * \brief 主框架实现文件
 * \author 张龙星
 * \version 1.00.00
 * \date 2015-08-04
 * \copyright 航天恒星科技有限公司遥感测绘事业部
 * \details 编码文件使用UTF-8编码格式，使用匈牙利命名法，使用doxygen注释样式
 *          类名采用RSGIS开头，动态库抛出标识采用XXXX_EXPORT
 */
#ifndef RSGISWINDOW_H
#define RSGISWINDOW_H

#include <QMainWindow>
#include "rsgisapp_global.h"
#include "rsgisappinterface.h"
#include "shared/ribbonwindow.h"

namespace Ui {
class RSGISWindow;
}

class QProgressBar;
class QDockWidget;

/*!
 * \brief The RSGISWindow是主框架类
 */
class RSGISAPPSHARED_EXPORT RSGISWindow : public RibbonWindow
{
    Q_OBJECT

public:
    /*!
     * \brief RSGISWindow 构造函数，初始化类
     * \param parent 父窗口指针
     */
    explicit RSGISWindow(QWidget *parent = 0);

    /*!
     * \brief 析构函数
     */
    ~RSGISWindow();

    /*!
     * \brief instance 获取主框架窗口指针
     * \return 主框架窗口指针
     */
    static RSGISWindow* instance()
    {
        return m_sInstance;
    }

    /*!
     * \brief layerDockWidget
     * \return
     */
    QDockWidget* layerDockWidget();

    /*!
     * \brief propertyDockWidget
     * \return
     */
    QDockWidget* propertyDockWidget();

    /*!
     * \brief logOutDockWidget
     * \return
     */
    QDockWidget* logOutDockWidget();

protected:
    void createMenuFile();
    void createQuickAccessBar();
    void createRibbon();
    void createStatusBar();
    void createDockWidget();

private:
    void showPluginManager();

private:
    /*!
     * \brief ui UI界面
     */
    Ui::RSGISWindow *ui;

    /*!
     * \brief m_pAppInterface 接口指针
     */
    RSGISAppInterface* m_pAppInterface;

    /*!
     * \brief m_sInstance 主框架窗口指针
     */
    static RSGISWindow* m_sInstance;

    /*!
     * \brief m_pLayerDockWidget 图层管理浮动窗口
     */
    QDockWidget* m_pLayerDockWidget;

    /*!
     * \brief m_pPropertyDockWidget 属性浮动窗
     */
    QDockWidget* m_pPropertyDockWidget;

    /*!
     * \brief m_pLogOutDockWidget
     */
    QDockWidget* m_pLogOutDockWidget;

    QTimer m_timerProgressBar;
    QProgressBar* m_progressBar;
    QProgressBar* m_progressBar1;
    QProgressBar* m_progressBar2;

    int m_valueProgress;

    Qtitan::RibbonPage* m_pageContext;
};

#endif // RSGISWINDOW_H
